P11-1. Grafana 상관분석과 Kiali 토폴로지 - 이론 개념

Part 11 (이론): LGTM의 완성 — Grafana 3대 신호 상관분석(Correlation)과 Kiali 메시 토폴로지

핵심 학습 목표

  1. 메트릭(VictoriaMetrics), 로그(Loki), 트레이스(Tempo)를 단순히 한곳에 모아두는 것을 넘어, 장애 지점에서 단 한 번의 클릭으로 Metric → Trace → Log를 넘나드는 상관분석(Correlation) 의 원리를 설명할 수 있다.
  2. 시계열 메트릭 그래프 위에 실제 느렸던 요청의 Trace ID 표본을 심어 두는 Exemplar(이그젬플러) 와 Grafana의 traceToLogsV2 연결 구조를 이해한다.
  3. 서비스 메시 전용 관제탑인 Kiali 가 어떻게 VictoriaMetrics의 RED/TCP 메트릭과 Istio CRD를 결합해 실시간 동서 트래픽 지도(Topology Graph) 를 그려내는지 파악한다.
  4. istioctl analyze와 Kiali의 설정 정합성 검증(Validation) 으로 YAML 오타나 라우팅 충돌을 사전에 적발하는 원리를 익힌다.


1. 새벽 3시 장애 현장의 비극: 왜 도구가 3개면 복구 시간(MTTR)이 길어질까?

많은 기업이 메트릭은 Prometheus에, 로그는 ELK에, 트레이스는 Jaeger에 따로따로 구축해 놓고 "우리도 관측성 3대 요소를 다 갖췄다!" 고 말합니다.
하지만 새벽 3시에 결제 장애 알람이 울리면 어떤 일이 벌어질까요?

  1. 엔지니어가 메트릭 대시보드를 열어 "어? 03시 02분에 p99 지연 시간이 5초로 튀었네!" 를 확인합니다.
  2. 이제 로그 화면(다른 창) 을 열어 시간 범위를 03시 01분~03시 03분으로 수동 입력하고, 수만 줄의 로그 중에서 어느 요청이 5초 걸렸는지 눈으로 스크롤하며 찾습니다.
  3. 겨우 의심스러운 request_id를 복사해서 트레이스 화면(또 다른 창) 에 붙여 넣었지만, 샘플링이 안 되어 있거나 포맷이 달라 조회가 안 됩니다.

이렇게 세 데이터가 서로 남남처럼 끊어져 있는 상태를 사일로화된 관측(Siloed Observability) 이라고 부릅니다.
LGTM 스택의 진짜 가치는 가운데 글자인 G (Grafana) 가 M(VictoriaMetrics) · T(Tempo) · L(Loki) 세 저장소를 하나의 핏줄(Trace ID & Pod Label)로 묶어 1클릭 점프를 가능하게 해준다는 데 있습니다!


2. 핵심 해부 ①: Metric → Trace → Log 1클릭 상관분석 (Exemplar & traceToLogsV2)

Grafana에서 어떻게 숫자 그래프(메트릭)를 클릭했는데 트레이스(Tempo)가 열리고, 트레이스를 클릭했는데 로그(Loki)가 열리는 걸까요? 그 비밀은 두 개의 연결 고리에 있습니다.

flowchart LR
    subgraph STEP1["1단계 · Metric (VictoriaMetrics)"]
        M_CHART["p99 응답 시간 그래프 급등!
그래프 꼭대기에 찍힌 별표(◆ Exemplar) 클릭!"] end subgraph STEP2["2단계 · Trace (Grafana Tempo)"] T_SPAN["해당 요청의 전체 폭포수(Waterfall) 즉시 오픈!
범인 구간: Waypoint -> order-api-v1 (3,010ms)
Span 옆의 [Logs for this span] 버튼 클릭!"] end subgraph STEP3["3단계 · Log (Grafana Loki)"] L_LINE["정확히 그 시각(±1초), 그 파드(waypoint/order-api)가 남긴
원본 액세스 로그 & 에러 메시지 즉시 하이라이트!"] end STEP1 ==>|"고리 1: Exemplar (trace_id 내장)"| STEP2 STEP2 ==>|"고리 2: traceToLogsV2 (시간 + 라벨 + TraceID 매칭)"| STEP3
용어 정리 — 상관분석을 가능하게 하는 2대 핵심 기술

  1. Exemplar (이그젬플러 = 메트릭 바구니 속 대표 표본 바코드):
    • 원래 히스토그램 메트릭(_bucket)은 "3초 이상 걸린 요청이 5건 있었다" 처럼 숫자(개수) 만 기록하고, 그 5건이 누구였는지는 버립니다.
    • 하지만 Exemplar 기능을 켜면, 프록시가 히스토그램 바구니의 숫자를 올릴 때 "참고로 방금 3초 걸린 그 요청의 Trace ID는 4bf92f35...번이었어!" 라는 대표 샘플 꼬리표(Exemplar) 를 메트릭 숫자 옆에 작은 포스트잇처럼 딱 붙여 둡니다!
    • 덕분에 Grafana 메트릭 그래프 위에 작은 다이아몬드 점(◆)들이 찍히고, 그 점을 클릭하는 순간 4bf92f35...번 트레이스 화면으로 1초 만에 날아갈 수 있습니다!
  2. traceToLogsV2 & tracesToMetrics (데이터소스 간 교차 참조 설정):
    • Grafana에 Tempo 데이터소스를 등록할 때 "이 트레이스의 Span에 적힌 namespace와 pod 라벨을 가져다가, 해당 Span의 시작 시각(startTime)부터 종료 시각(endTime)까지 Loki 데이터소스에서 자동으로 조회해 주는 버튼(traceToLogsV2)을 만들어라!" 라고 미리 연결선을 이어 두는 설정입니다.


3. 핵심 해부 ②: 서비스 메시의 종합 관제탑 — Kiali

Grafana가 시계열 차트와 로그·트레이스 분석의 제왕이라면, Kiali(키알리) 는 오직 Istio 서비스 메시만을 위해 탄생한 시각적 지휘 통제실(Mesh Control Tower) 입니다!

flowchart TB
    subgraph INPUTS["Kiali가 읽어 들이는 3가지 정보원"]
        PROM["1. VictoriaMetrics (Prometheus API)
istio_requests_total (L7 HTTP)
istio_tcp_sent_bytes_total (L4 HBONE)"] K8S["2. Kubernetes & Istio API
Pod, Service, Gateway(Waypoint),
HTTPRoute, AuthorizationPolicy, WorkloadEntry"] TEMPO["3. Grafana Tempo
서비스별 분산 트레이스 (Spans)"] end subgraph KIALI_FEATURES["Kiali가 제공하는 3대 핵심 무기"] MAP["무기 1 · 실시간 서비스 토폴로지 지도 (Traffic Graph)
- 누가 누구와 통신하는지 애니메이션 화살표 표시
- mTLS 자물쇠(🔒) 및 HBONE 터널 적용 여부 표시
- 90:10 카나리 비율 및 5xx 에러 구간 빨간색 경보!"] WIZ["무기 2 · Ambient Mesh(ztunnel + Waypoint) 상태 가시화
- 파드별 사이드카 유무 및 Waypoint 경유 여부 한눈에 확인
- 외부 Linux VM(WorkloadEntry/ServiceEntry)까지 지도에 표시!"] VAL["무기 3 · 실시간 설정 정합성 검사기 (Istio Config Validation)
- 오타가 난 VirtualService, 연결 안 된 Gateway,
충돌하는 AuthorizationPolicy에 즉시 경고등(KIAxxxx) 표시!"] end PROM --> KIALI_FEATURES K8S --> KIALI_FEATURES TEMPO --> KIALI_FEATURES
용어 정리 — Kiali 와 istioctl analyze

  • Kiali (키알리): 그리스어로 "망원경(Spyglass)" 이라는 뜻입니다. 복잡하게 얽힌 수백 개의 마이크로서비스와 외부 VM들이 현재 몇 %의 비율로 통신하고 있는지, 어디서 403이나 503 에러가 터지고 있는지를 살아 움직이는 네트워크 지도(Graph)로 보여주는 Istio 공식 대시보드입니다.
  • istioctl analyze (CLI 정적/동적 분석기):
    Kiali 화면에 뜨는 설정 검증 기능을 터미널 명령어로 실행하는 도구입니다. 클러스터의 현재 상태나 배포할 YAML 파일에 논리적 모순이 없는지 검사해 ✔ No validation issues found when analyzing namespace: part1-demo. 처럼 즉석에서 건강 검진 결과를 알려줍니다!


🔗 다음 단계 (실습 검증)

이제 LGTM 스택의 화룡점정인 Grafana (11.5.2) 와 Kiali (v2.7.0) 를 클러스터에 배포하고,

  1. Grafana에 VictoriaMetrics · Loki · Tempo 3대 데이터소스와 traceToLogsV2 상관분석 링크를 코드(Provisioning ConfigMap)로 자동 주입해 기동하고,
  2. Kiali를 VictoriaMetrics · Tempo · Grafana 와 연동해 띄운 뒤,
  3. API와 CLI(istioctl analyze)로 우리의 Ambient Mesh(study-client → Waypoint → order-api v1/v2 + 외부 pg-vm.mesh.internal) 토폴로지 그래프 데이터와 설정 무결성을 100% 실측 검증합니다!

네비게이션

이전 목록 다음
◀ Part 10 실습 목록으로 Part 11 실습 ▶